import {
  LOGIN,
  LOGOUT,
  MENU_LIST,
  LOGIN_CODE,
  LOGIN_CODE_NEW,
  LOGIN_CODE_SMS_NEW,
  PHONE_CODE,
  RESET_PASSWORD,
  ACCESS_TOKEN,
  ENTERPRISE_LIST,
  ENTERPRISE_DETAIL,
  UPDATE_ENTERPRISE,
  ISAVAILABLE_LOGIN,
  GET_PERSONAL_INFO,
  SEND_PERSONAL_INFO_SMS,
  UPDATE_PERSONAL_INFO_PHONE,
  UPDATE_PERSONAL_INFO_ACCOUNT,
  UPDATE_PERSONAL_INFO_EMAIL,
  SEND_PERSONAL_INFO_EMAIL,
  UPDATE_PERSONAL_INFO_OTHER
} from "@/services/api";
import { request, METHOD } from "@/utils/request";
/**
 * 登录服务
 * @param name 账户名
 * @param password 账户密码
 * @returns {Promise<AxiosResponse<T>}
 */
export async function getMenu(params) {
  return request(MENU_LIST, METHOD.POST, params);
}

/**
 * 退出登录
 */
export function logout(params) {
  return request(LOGOUT, METHOD.POST, params);
}

// 登录
export async function login(params) {
  return request(LOGIN, METHOD.POST, params);
}

/**
 * 获取验证码
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
export async function getLoginCode(params) {
  return request(LOGIN_CODE, METHOD.POST, params);
}

/**
 * 获取验证码 新
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
 export async function getLoginCodeNew(params) {
  return request(LOGIN_CODE_NEW, METHOD.POST, params);
}

/**
 * 获取验证码 uc2.1 最新
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
export async function getLoginSmsCodeNew(params) {
  return request(LOGIN_CODE_SMS_NEW, METHOD.POST, params);
}

/**
 * 获取验证码[忘记密码]
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
// 验证手机验证码[忘记密码]
export async function checkPhoneSmsCode(params) {
  return request(PHONE_CODE, METHOD.POST, params);
}

// 获取token
export async function getToken(params) {
  return request(ACCESS_TOKEN, METHOD.POST, params);
}

// 重置密码
export async function resetPassword(params) {
  return request(RESET_PASSWORD, METHOD.POST, params);
}

/**
 * 获取企业信息
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
export async function getEnterprise(params) {
  return request(ENTERPRISE_LIST, METHOD.POST, params);
}

/**
 * 获取组织权限树列表
 * @param params 获取组织权限树列表
 * @returns {Promise<AxiosResponse<T>>}
 */
 export async function getEnterpriseDetail(params) {
  return request(ENTERPRISE_DETAIL, METHOD.POST, params)
}
/**
 * 修改企业信息
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */

export async function updateEnterprise(params) {
  return request(UPDATE_ENTERPRISE, METHOD.POST, params);
}

/**
 * 校验是否可登录
 * @param params
 * @returns {Promise<AxiosResponse<T>}
 */
export async function getIsAvailable() {
  return request(ISAVAILABLE_LOGIN, METHOD.GET);
}

/**
 * 个人信息管理：查询外部用户个人信息
 * @param {*} params 
 * @returns 
 */
export async function getPersonelInfo(params) {
  return request(GET_PERSONAL_INFO, METHOD.POST, params);
}

/**
* 个人信息管理：安全手机验证发送验证码
* @param {*} params
* @returns
*/
export async function sendPersonelSms(params) {
  return request(SEND_PERSONAL_INFO_SMS, METHOD.POST, params);
}

/**
* 个人信息管理：修改用手机号
* @param {*} params 
* @returns 
*/
export async function updatePersonelPhone(params) {
  return request(UPDATE_PERSONAL_INFO_PHONE, METHOD.POST, params);
}

/**
* 个人信息管理：修改用户名
* @param {*} params
* @returns
*/
export async function updatePersonelAccount(params) {
  return request(UPDATE_PERSONAL_INFO_ACCOUNT, METHOD.POST, params);
}

/**
* 个人信息管理：修改邮箱
* @param {*} params
* @returns
*/
export async function updatePersonelEmail(params) {
  return request(UPDATE_PERSONAL_INFO_EMAIL, METHOD.POST, params);
}

/**
* 个人信息管理：邮箱发送验证码
* @param {*} params
* @returns
*/
export async function sendPersonelEmail(params) {
  return request(SEND_PERSONAL_INFO_EMAIL, METHOD.POST, params);
}

/**
* 个人信息管理：修改用户名称,昵称等信息
* @param {*} params
* @returns
*/
export async function updatePersonelOther(params) {
  return request(UPDATE_PERSONAL_INFO_OTHER, METHOD.POST, params);
}

export default {
  login,
  logout,
  getLoginCode,
  getLoginCodeNew,
  checkPhoneSmsCode,
  resetPassword,
  getToken,
  getMenu,
  getEnterprise,
  getEnterpriseDetail,
  updateEnterprise,
  getIsAvailable,
  getPersonelInfo,
  updatePersonelPhone,
  updatePersonelAccount,
  updatePersonelEmail,
  sendPersonelEmail,
  updatePersonelOther
};
